package ziface

import "net"

type IConnection interface {
	Start()
	Stop()
	//从当前连接获取原始的socket TCPConn
	GetTCPConnection() *net.TCPConn
	//获取当前连接ID
	GetConnID() uint32
	//获取客户端地址信息
	RemoteAddr() net.Addr
	//直接将Message数据发送数据给远程的TCP客户端
	SendMsg(msgId uint32,data []byte) error
	//直接将Message数据发送给远程的TCP客户端(有缓冲)
	SendBufMsg(msgId uint32,data []byte)error

	//设置连接属性
	SetProperty(key string,value interface{})
	//获取连接属性
	GetProperty(key string)(interface{},error)
	//移除连接属性
	RemoveProperty(key string)
}

/*
这个是所有conn链接在处理业务的函数接口，第一参数是socket原生链接，
第二个参数是客户端请求的数据，第三个参数是客户端请求的数据长度。
这样，如果我们想要指定一个conn的处理业务，只要定义一个HandFunc类型的函数，然后和该链接绑定就可以了。
*/
//定义一个统一处理链接业务的接口
type HandFunc func(*net.TCPConn, []byte, int) error
